home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 2 / Atari Mega Archive CD - Volume 2.iso / minix / up1510b.tgz / up1510b / src / lib / posix / fdopen.c < prev    next >
C/C++ Source or Header  |  1990-07-23  |  678b  |  33 lines

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. FILE *fdopen(fd, mode)
  5. int fd;
  6. _CONST char *mode;
  7. {
  8.   register int i;
  9.   FILE *fp;
  10.   int flags = 0;
  11.  
  12.   for (i = 0; _io_table[i] != 0; i++)
  13.     if (i >= NFILES) return((FILE *)NULL);
  14.  
  15.   switch (*mode) {
  16.       case 'w':    flags |= WRITEMODE;          break;
  17.       case 'a':    flags |= WRITEMODE;          break;
  18.       case 'r':    flags |= READMODE;          break;
  19.       default:    return ((FILE *)NULL);
  20.   }
  21.  
  22.   if ((fp = (FILE *)malloc(sizeof(FILE))) == (FILE *)NULL) return((FILE *)NULL);
  23.  
  24.   fp->_count = 0;
  25.   fp->_fd = fd;
  26.   fp->_flags = flags;
  27.   fp->_buf = (char *)malloc(BUFSIZ);
  28.   fp->_flags |= IOMYBUF;
  29.   fp->_ptr = fp->_buf;
  30.   _io_table[i] = fp;
  31.   return(fp);
  32. }
  33.